package com.ruoyi.system.domain;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 合同阶段表对象 alp_contract_stage
 * 
 * @author zhangjun
 * @date 2020-02-13
 */
public class AlpContractStage extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    private Long stageId;

    /** 合同id */
    @Excel(name = "合同id")
    private Long contractId;

    private AlpContractDetail contract;

    /** 阶段序号 */
    @Excel(name = "阶段序号")
    private Long stageNo;

    /** 阶段名称 */
    @Excel(name = "阶段名称")
    private String stageName;

    /** 阶段所属部门 */
    @Excel(name = "阶段所属部门")
    private String stageDepartment;

    /** 阶段负责人一 */
    @Excel(name = "阶段负责人一")
    private String stagePrincipal1;

    /** 阶段负责人二 */
    @Excel(name = "阶段负责人二")
    private String stagePrincipal2;

    /** 合同工期开始时间 */
    @Excel(name = "合同工期开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractStartTime;

    /** 合同工期结束时间 */
    @Excel(name = "合同工期结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractEndTime;

    /** 销售计划开始时间 */
    @Excel(name = "销售计划开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date budgetStartTime;

    /** 销售计划结束时间 */
    @Excel(name = "销售计划结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date budgetEndTime;

    /** 实施预测开始时间 */
    @Excel(name = "实施预测开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date predictStartTime;

    /** 实施预测结束时间 */
    @Excel(name = "实施预测结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date predictEndTime;

    /** 交付实际开始时间 */
    @Excel(name = "交付实际开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date actualStartTime;

    /** 交付实际结束时间 */
    @Excel(name = "交付实际结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date actualEndTime;

    /** 本阶段合同收款金额 */
    @Excel(name = "本阶段合同收款金额")
    private BigDecimal stageMoney;

    /** 本阶段合同收款时间 */
    @Excel(name = "本阶段合同收款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date stageCollectionTime;

    private List<AlpStageBudget> stageBudgetList;

    private List<AlpStagePredict> stagePredictList;

    private List<AlpStageActual> stageActualList;


    /** 本阶段明细记录 */
    private List<AlpContractStageDetail> alpContractStageDetails;

    public AlpContractDetail getContract() {
        return contract;
    }

    public void setContract(AlpContractDetail contract) {
        this.contract = contract;
    }

    public List<AlpContractStageDetail> getAlpContractStageDetails() {
        return alpContractStageDetails;
    }

    public void setAlpContractStageDetails(List<AlpContractStageDetail> alpContractStageDetails) {
        this.alpContractStageDetails = alpContractStageDetails;
    }

    public void setStageId(Long stageId)
    {
        this.stageId = stageId;
    }

    public Long getStageId() 
    {
        return stageId;
    }
    public void setContractId(Long contractId) 
    {
        this.contractId = contractId;
    }

    public Long getContractId() 
    {
        return contractId;
    }
    public void setStageNo(Long stageNo) 
    {
        this.stageNo = stageNo;
    }

    public Long getStageNo() 
    {
        return stageNo;
    }
    public void setStageName(String stageName) 
    {
        this.stageName = stageName;
    }

    public String getStageName() 
    {
        return stageName;
    }
    public void setStageDepartment(String stageDepartment) 
    {
        this.stageDepartment = stageDepartment;
    }

    public String getStageDepartment() 
    {
        return stageDepartment;
    }
    public void setStagePrincipal1(String stagePrincipal1) 
    {
        this.stagePrincipal1 = stagePrincipal1;
    }

    public String getStagePrincipal1() 
    {
        return stagePrincipal1;
    }
    public void setStagePrincipal2(String stagePrincipal2) 
    {
        this.stagePrincipal2 = stagePrincipal2;
    }

    public String getStagePrincipal2() 
    {
        return stagePrincipal2;
    }
    public void setContractStartTime(Date contractStartTime) 
    {
        this.contractStartTime = contractStartTime;
    }

    public Date getContractStartTime() 
    {
        return contractStartTime;
    }
    public void setContractEndTime(Date contractEndTime) 
    {
        this.contractEndTime = contractEndTime;
    }

    public Date getContractEndTime() 
    {
        return contractEndTime;
    }
    public void setBudgetStartTime(Date budgetStartTime) 
    {
        this.budgetStartTime = budgetStartTime;
    }

    public Date getBudgetStartTime() 
    {
        return budgetStartTime;
    }
    public void setBudgetEndTime(Date budgetEndTime) 
    {
        this.budgetEndTime = budgetEndTime;
    }

    public Date getBudgetEndTime() 
    {
        return budgetEndTime;
    }
    public void setPredictStartTime(Date predictStartTime) 
    {
        this.predictStartTime = predictStartTime;
    }

    public Date getPredictStartTime() 
    {
        return predictStartTime;
    }
    public void setPredictEndTime(Date predictEndTime) 
    {
        this.predictEndTime = predictEndTime;
    }

    public Date getPredictEndTime() 
    {
        return predictEndTime;
    }
    public void setActualStartTime(Date actualStartTime) 
    {
        this.actualStartTime = actualStartTime;
    }

    public Date getActualStartTime() 
    {
        return actualStartTime;
    }
    public void setActualEndTime(Date actualEndTime) 
    {
        this.actualEndTime = actualEndTime;
    }

    public Date getActualEndTime() 
    {
        return actualEndTime;
    }

    public BigDecimal getStageMoney() {
        return stageMoney;
    }

    public void setStageMoney(BigDecimal stageMoney) {
        this.stageMoney = stageMoney;
    }

    public Date getStageCollectionTime()
    {
        return stageCollectionTime;
    }

    public List<AlpStageBudget> getStageBudgetList() {
        return stageBudgetList;
    }

    public void setStageBudgetList(List<AlpStageBudget> stageBudgetList) {
        this.stageBudgetList = stageBudgetList;
    }

    public List<AlpStagePredict> getStagePredictList() {
        return stagePredictList;
    }

    public void setStagePredictList(List<AlpStagePredict> stagePredictList) {
        this.stagePredictList = stagePredictList;
    }

    public List<AlpStageActual> getStageActualList() {
        return stageActualList;
    }

    public void setStageActualList(List<AlpStageActual> stageActualList) {
        this.stageActualList = stageActualList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("stageId", getStageId())
            .append("contractId", getContractId())
            .append("stageNo", getStageNo())
            .append("stageName", getStageName())
            .append("stageDepartment", getStageDepartment())
            .append("stagePrincipal1", getStagePrincipal1())
            .append("stagePrincipal2", getStagePrincipal2())
            .append("contractStartTime", getContractStartTime())
            .append("contractEndTime", getContractEndTime())
            .append("budgetStartTime", getBudgetStartTime())
            .append("budgetEndTime", getBudgetEndTime())
            .append("predictStartTime", getPredictStartTime())
            .append("predictEndTime", getPredictEndTime())
            .append("actualStartTime", getActualStartTime())
            .append("actualEndTime", getActualEndTime())
            .append("stageMoney", getStageMoney())
            .append("stageCollectionTime", getStageCollectionTime())
            .toString();
    }
}
